<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
       
       // var 语句 用于声明一个函数范围或全局范围的变量，并可将其初始化为一个值（可选）。
        //1.在全局的环境下创建的var是在全局对象上面
        //2.在函数里创建的，不会在全局对象里面
        //3.使用var 要注意js保留字段名
        //4.var 可以重新声明并且覆盖原有值（这就是var最恐怖的地方）
        //5.
        // var 的好处就是很便捷，但是这也是它致命的地方，越没有限制，越容易出差

       console.log(name) //name // 因为js的保留对象，不能用，否则会有意外
       console.log(name1) //undefined
        // var name='name';
        var name1='name1';
        console.log(ab) //undefined
        var ab='ab';
        // console.log(a)
        // var a='world';
        // console.log(a)

        // 全局变量，但不是全局对象的直接属性 
        console.log(window.y);//undefined
        console.log(globalThis.y);//undefined
        var y='haha'
        console.log(globalThis.hasOwnProperty('y')); // true
        console.log(window.y);//haha
        console.log(globalThis.y);//haha 
    
        // delete无效
        var x='hello';
        delete x //无效
        delete globalThis.x; //无效


        function funVar(){
            var varInFun='varInFun'
        }

        funVar();
        // console.log(varInFun)//报错

        // 外面先声明赋值，如果内部没声明，直接引用外部的值，如果内部重新声明或者赋值，则会变成undefined.
        var var2='var21'
        function newVar(){
            console.log('里面',var2) // undefined
            var var2="var22"
            console.log('里面',var2) 
        }
        newVar()
        console.log('外面',var2) // var21
    </script>
</head>
<body>
    
</body>
</html>

